Chat bots, or conversational agents, communicate with users via natural-language dialogue and may operate through a web page, a phone, or a messaging system. For example, they are programmed to answer commonly asked question, help navigate a web page more effectively, or fill out online forms. Companies are increasingly relying on chat bots to offer support and services to users, for example, their customers and employees.
Like graphical applications, chat bots may accomplish their work by calling web Application Programming Interfaces (APIs). These APIs offer users access to the resources stored in a company's databases and the actions implemented in the company's systems. An approach for providing web APIs is REST (REpresentational State Transfer). In REST, the service provider hosts resources, and the service provider and consumer interact by transferring representations (typically JSON: JavaScript Object Notation) of the state of the resources.
Chat bots are difficult to build and it takes time to get them right. Unlike other software, chat bots depend upon NLU (natural language understanding), which may not be perfect. Since it is hard to anticipate what the common NLU mistakes will be, it pays to deploy an initial bot quickly and gather experience with it in the field to improve it. Chat bot development is further complicated by requiring both software development and machine learning skills. Also, since companies have only recently started to broadly embrace chat bots, there is a lack of programming models for non-experts to develop chat bots.